//
//  TKIMSDK
//   ======================【SDK 相关信息】==================
//         1.SDK 使用于聊天 客服 推送项目
//         2.单前SDK 版本号 35
//  Created by TryHone on 16/7/2.
//  Copyright © 2016年 TryHone. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "TKIMSDKMacro.h"

typedef void(^callBackRespose)(NSInteger errorNumber,NSString* info);
typedef void(^callBackResposeInfo)(NSInteger errorNumber,NSString* info,TKIMResultVo* data);
@interface TKIMSDKManager : NSObject

#pragma mark--对接内部外部推送中心公共方法

+(NSString*)imUDID;


/**
 *  @author Alan, 2016年07月28日13:46:46
 *
 *  @brief 会话列表是否显示短线网络状况信息
 *
 *  @param flag    flag=No 需要提示  Yes 不需要提示
 */
+(void)isNotTips:(BOOL)flag;


/**
 *  @author Alan, 2016年07月28日13:46:46
 *  @brief  获取是否需要提示的设置值
 */
+(BOOL)isNotTips;


/**
 *  @author Alan, 2016年09月27日10:29:02
 *  @brief  是否绑定用户
 */
+(BOOL)isBindUser;


/**
 *  @author Alan, 16-11-07 16:11:13
 *
 *  @brief 获取游客Puid
 *
 *  @return puid
 */
+(NSString*)getTouristAccountPuid;


/**
 *  @author Alan, 16-12-03 19:12:11
 *
 *  @brief 获取当前登录的puid
 *
 *  @return puid
 */
+(NSString*)getLoginUserPuid;


#pragma mark--对接第三方推送中心使用方法

/**
 *  @author Alan, 2016年07月14日14:30:32
 *
 *  @brief 注册使用推送功能
 *
 *  @param appkey    appkey 由思迪提供
 *  @param cust_code 账户，第三方
 *  @param psw       密码 暂时未使用
 *  @param back      方法回调
 */
+(void)registerApp:(NSString*)appkey cust_code:(NSString*)cust_code pasword:(NSString*)psw callBackBlock:(callBackRespose)back;


/**
 *  @author Alan, 2016年07月14日14:36:55
 *
 *  @brief 上传推送token （该方法配合配置文件使用,调用该方法会把devicetoken上传到消息服务器）
 *
 *  @param appkey 由思迪提供
 *  @param token  devicetoken 接收系统推送回调获得
 */
+(void)uploadDeviceToken:(NSString*)appkey devicetoken:(NSData*)token;


#pragma mark--客户端测试使用，
/**
 *  @author Alan, 2016年09月27日10:48:02
 *  @brief  主要是代替服务器端调用98接口
 *
 *  @param token    设备唯一标识
 *  @param appkey   Appkey
 *  @param apptype  设备类型
 *  @param custcode 客户编号
 *  @param callBack  回调
 */
+(void)initData:(NSString*)token appkey:(NSString*)appkey apptype:(SDKAPPTYPE)apptype custcode:(NSString*)custcode callback:(callBackRespose)callBack;


/**
 *  @author Alan, 2016年09月27日17:37:49
 *
 *  @brief 
 *
 *  @param app_key  应用的key
 *  @param jid      消息的jid
 *  @param callBack 回调
 */
+(void)setMsgState:(NSString*)app_key msgType:(NSString*)jid callback:(callBackRespose)callBack;


#pragma mark--第二版推送
/**
 *  @author Alan, 2016年08月05日19:36:45
 *
 *  @brief SDK 启动
 *
 *  @param appkey 应用appkey
 *  @param app_type 应用app_type
 *  @param back   回调
 */
+(void)start:(NSString*)appkey appType:(SDKAPPTYPE)app_type callBackBlock:(callBackRespose)back;


/**
 *  @author Alan, 2016年08月05日19:39:40
 *
 *  @brief 绑定第三方用户
 *
 *  @param appkey   应用appkey
 *  @param username 第三方用户唯一表示
 *  @param back     回调
 */
+(void)bindingUser:(NSString*)appkey  username:(NSString*)username memberId:(NSString*)memberId callBackBlock:(callBackRespose)back;

//add by yujinshi
+(void)addFriend:(NSString*)service_code cust_code:(NSString*)cust_code callBack:(TKIMCallBack)callBack;
+(void)resetConverseCountById:(NSString *)targetId callback:(callBackRespose)callBack;
+(void)getComplianceMsg:(NSString*)appkey username:(NSString*)username callBack:(TKIMCallBack)callBack;


//优化版登陆
+(void)bindingUserOptimize:(NSString*)appkey  username:(NSString*)username callBackBlock:(callBackRespose)back;
+(void)bindingAccount:(NSString*)appkey  username:(NSString*)username callBackBlock:(callBackRespose)back;
+(void)loginBusiness:(callBackRespose)back;
+(void)loginBusinessWithCustCode:(NSString *)custCode callBack:(callBackRespose)back;




/**
 *  @author Alan, 2016年09月27日10:39:48
 *  @brief 解除绑定 解除绑定会自动切换到游客账号
 *  @param back 回调
 */
+(void)unBindingUser:(SDKAPPTYPE)apptype callBackBlock:(callBackRespose)back;

#pragma mark--二期HTTP辅助接口
/**
 *  @author Alan, 2016年09月28日16:57:23
 *  @brief 获取推送列表
 *  @param appkey    应用key
 *  @param cust_code 第三方唯一账户
 *  @param callBack  回调
 */
+(void)followAccount:(NSString*)appkey callBack:(callBackResposeInfo)callBack;


/**
 *  @author Alan, 16-12-03 19:12:39
 *
 *  @brief 业务心跳
 *
 *  @param puid         puid
 *  @param apptype      app类型
 *  @param callBackFunc 回调
 */
+(void)keepHeart:(NSString*)puid appType:(SDKAPPTYPE)app_type callBack:(callBackRespose)callBack;


/**
 *  @author Alan, 17-01-10 19:01:19
 *
 *  @brief 从服务器漫游消息
 */
+(void)loadConversationsWithCountFromServer:(callBackRespose)back;


/**
 *  @author Alan, 17-04-14 10:04:59
 *
 *  @brief 上传apns点击事件
 *
 *  @param userInfo 推送获取到的值
 *  @param back     回调
 */
+(void)uploadApnsMsgClickEvent:(NSDictionary*)userInfo callback:(TKIMCallBack)back;

/**
 *  @author Alan, 17-09-28 10:09:03
 *
 *  @brief 消息项点击事件上传
 *
 *  @param userInfo
 *  @param back
 */
+(void)uploadMsgClickEvent:(NSString*)messageid callback:(TKIMCallBack)back;

/**
 *  @author Alan, 17-05-10 17:05:07
 *
 *  @brief 获取推送列表显示与否
 *
 *  @param back 回调
 */
+(void)pushTypeShowControl:(TKIMCallBack)back;


#pragma mark --工具类方法
/**
 *  @author Alan, 17-05-25 17:05:23
 *
 *  @brief 清除硬盘缓存
 */
+(void)clearDiskCache;


/**
 *  @author Alan
 *
 *  @brief
 *  @param str 加密字符串
 *  @return 加密字符串
 */
+(NSString *)rsaPublicKeyEncryptString:(NSString*)str;


+(void)getCoustomeCommonService:(TKIMCallBack)back;


@end
